<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>姓名案例_计算属性语法实现</title>
    <!--引入vue-->
    <script type="text/javascript" src="../js/vue.js"></script>
</head>

<body>

    <!--准备好一个容器-->
    <div id="root">
        <!-- value可以设置初始值
             value中的初始值想使用data中属性值  需要使用指令语法 进行(单向/双向)数据绑定 -->
        姓：<input type="text" v-model="firstName"><br/><br/>
        名：<input type="text" v-model="lastName"><br/><br/>
        <!-- {{fullName}}--将函数展示在页面上  
             {{fullName()}}--将fullName函数中的return返回值插入到插值表达式中
         -->
         <!-- 注意：
                简写时，我们不能在该插值表达式中加()  
                我们是要将该函数中的属性值放在vm.fullName中 -->
        全名：<span>{{fullName}}</span><br/><br/>
       
    </div>
</body>
<script type="text/javascript">
    Vue.config.productionTip = false  //阻止vue在启动时生成使用生产版本提示。
    // 准备一个Vue实例
   const vm =  new Vue({
        el:'#root',
        data:{
            firstName:'南', // vm._data时 只有firstName、lastName属性 没有计算属性fullName
            lastName:'风'
        },
       computed:{ 
           /* 完整写法 */
            // fullName:{                            
            //     get(){   
            //         console.log('get被调用了');
            //         console.log(this);  // 此处的this就是vm
            //         return this.firstName + '-' + this.lastName  // fullName依赖的数据是firstName、lastName，当其中任何一个属性发生改变时，get就会被重新调用           
            //     },           
            //     set(value){
            //         console.log('fullName被修改了，修改的值时',value);
            //         const arr = value.split('-') // 按照 -对字符串进行分割 存进数组
            //         this.firstName = arr[0] // 对计算属性依赖的属性进行改变
            //         this.lastName = arr[1]
            //     }
            // }
            fullName(){ //将function当作原来的get函数去使用,fullName不在当成一个对象去使用  :function(){} 可以简写为(){}
                console.log('get被调用了');
                console.log(this);
                return this.firstName + '-' + this.lastName 
            }
       }
    })
</script>
</html>
